# # # item_one=3
# # # item_two=2
# # # item_three=9
# # # total=item_one +\
# # # item_two +\
# # # item_three
# # # print(total)
# # # word ='word'
# # # sentence="这是一个句子。"
# # # paragraph="这是一个段落。"
# # # print(sentence)
# # # print(paragraph)
# # # print(word)
# # print("hello world")
# # print("hello world")
# # print("hello world")
# x="a"
# y="b"
# #换行输出
# print (x)
# print (y)
# print('--------')
# #不换行输出
# print (x,end='')
# print (y,end='')
# #不换行输出
# print (x+y,end='')
# import sys; x="rko";sys.stdout.write(x+'\n')
#import expression
#import suite
#if expression:
 #   suite
#elif expression == "hello":
#    suite
#else:
#    suite
#str="asdcx"
#print(str[0])
#print(str[2:5])
#print(str[1:])
#print(str*3)
#print(str+"qwer")
#list = ['qw',456,6.5,'yk']
#blist=[756,'rt']
#print(list[2:6])
#print(blist+list)
#print(list[-4])

#tuple =('runoob',786 ,2.23,'john',70.2)
#list =['runoob',786,2.23,'john',70.2 ]
#list[2]=1000
#列表中是合法应用
#print(tuple)
#print(list)

# dict={}
# dict['one']="this is one"
# dict[2]="this is two"
# tdict={'name':'rung','code':438,'dept':'asle'}
# print(dict['one'])
# print (dict[2])
# print (tdict)
# print (tdict.keys())
# print (tdict.values())

# import random                                           
                                                        
# # 生成1-100之间的随机整数                                        
# secret_number = random.randint(1, 100)                  
# guess_count = 0                                         
                                                        
# while True:                                             
#     guess_count += 1                                    
#     # 处理用户输入（增加异常处理，避免输入非数字导致崩溃）                        
#     try:                                                
#         guess = int(input("请输入你猜测的数字（1-100）："))         
#     except ValueError:                                  
#         print("请输入有效的整数！")                              
#         continue  # 跳过本次循环，重新输入                         
                                                        
#     if guess == secret_number:                          
#         print(f"恭喜你猜对了！你一共猜了{guess_count}次")            
#         break                                           
#     elif guess < secret_number:  # 猜小了，提示“大一点”          
#         print("大一点")                                    
#     else:  # 猜大了，提示“小一点”                                
#         print("小一点")                                    
                                                        
#     if guess_count >= 7:  # 超过7次（含第7次）结束游戏              
#         print(f"次数用完了！正确答案是{secret_number}")            
#         break

# narcissistic_numbers = []
# for num in range(100, 1000):  # 1000以内的水仙花数是3位数
#     # 拆分个位、十位、百位
#     digit1 = num // 100          # 百位
#     digit2 = (num // 10) % 10    # 十位
#     digit3 = num % 10            # 个位
#     # 判断是否为水仙花数
#     if digit1**3 + digit2**3 + digit3**3 == num:
#         narcissistic_numbers.append(num)
# print("1000以内的水仙花数：")
# print(narcissistic_numbers)  

# def climb_stairs(n):
#     if n <= 0:
#         return 0
#     elif n == 1:
#         return 1
#     elif n == 2:
#         return 2
#     # 动态规划优化（避免递归重复计算）
#     a, b = 1, 2  # f(1)=1, f(2)=2
#     for _ in range(3, n+1):
#         a, b = b, a + b  # 迭代计算f(n) = f(n-1) + f(n-2)
#     return b
# # 示例：计算10个台阶的走法
# n = 10
# print(f"{n}个台阶的走法有：{climb_stairs(n)}种")  # 结果：89种

# class Teacher:
#     def __init__(self, name, age, number, subject) -> None:
#         self.name = name
#         self.age = age
#         self.number = number
#         self.subject = subject

#     def teach(self):
#         print(f'{self.name}正在教授{self.subject}')


# class Student:
#     def __init__(self, name, age, number) -> None:
#         self.name = name
#         self.age = age
#         self.number = number
#         self.class_num = class_num

#     def study(self):
#         print(f'{self.name}正在学习{class_num}')


# # 测试代码
# if __name__ == '__main__':
#     # 实例化Teacher并调用方法
#     teacher = Teacher("张老师", 35, "T001", "数学")
#     teacher.teach()

#     # 实例化Student并调用方法
#     student = Student("小明", 15, "S001", "高一《1）班")
#     student.study()

# import pandas as pd
# df3=pd.read_csv(
#     'data/2023年北京积分落户数据.csv',
#     # encoding='utf-8',
#     # sep='\t',
#     # index_col='公示编号',
#     # usecols=['公示编号','姓名,'积分分值']
#     # nrows=10,
#     # skiprows=np.arange(1,21),
#     # true_values=['是','Y','yes','Yes'],
#     # false_values=['否','N','no','No'],
#     # na_values=['---','N/A'],
# )
# df3.info()

# 从Excel文件中加载数据创建DataFrame
# df4 = pd.read_excel(
#     'data/2022年股票数据.xlsx',
#     sheet_name='JD',  # 加载的工作表的名字
#     usecols=['date', 'open', 'Close'],
#     index_col='Date'
# )
# df4

# import pandas as pd

# # 创建一个Series对象，指定名称为'A'，值分别为1，2，3，4
# # 默认索引为0，1，2，3

# # 显示Series对象
# print(series)

# # 如果你想要显式地设置索引，可以这样做：
# custom_index = [1, 2, 3, 4]  # 自定义索引
# series_with_index = pd.Series([1, 2, 3, 4], index=custom_index, name='A')

# # 显示带有自定义索引的series对象
# print(series_with_index)

# import pandas as pd
# df=pd.DataFrame({
#     '姓名':['张三','李四','王五'],
#     '年龄':[20,21,22],
#     '性别':['男','女','男'],
# })
# print(df)
# #将DataFrame写入Excel文件，写入'Sheet1'工作表
# df.to_excel('学生信息.xlsx',sheet_name='Sheet1',index=False)
# # 写入多个表单，使用ExcelWriter
# with pd.ExcelWriter('学生信息.xlsx') as writer:
#     df.to_excel(writer,sheet_name='Sheet1',index=False)
#     # 写入第二个DataFrame到'Sheet2'工作表
#     df2=pd.DataFrame({
#         '姓名':['赵六','钱七','孙八'],
#         '年龄':[23,24,25],
#         '性别':['女','男','女'],
#     })
#     df2.to_excel(writer,sheet_name='Sheet2',index=False)

# import pandas as pd
# # 创建一个简单的 DataFrame
# df = pd.DataFrame({
#     'Name': ['Alice', 'Bob', 'Charlie'],
#     'Age': [25, 30, 35],
#     'City': ['New York', 'Los Angeles', 'Chicago']
# })

# # 将 DataFrame 写入 Excel 文件，写入 'Sheet1' 表单
# df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)

# # 写入多个表单，使用 ExcelWriter
# with pd.ExcelWriter('output.xlsx') as writer:
#     df.to_excel(writer, sheet_name='Sheet1', index=False)
#     df.to_excel(writer, sheet_name='Sheet2', index=False)

# import pandas as pd
# df=pd.read_csv('code/data/property-data.csv')
# df.fillna(12345,inplace=True)
# print(df.to_string())

# import pandas as pd
# person ={
#     "name":['das','wqe','jhj'],
#     "age":[40,60,5644]
# }
# df=pd.DataFrame(person)
# for x in df.index:
#     if df.loc[x,"age"]>120:
#         df.loc[x,"age"]=120
#         print(df.to_string())

# import pandas as pd

# persons = {
#     "name": ['Google', 'Runoob', 'Runoob', 'Taobao'],
#     "age": [50, 40, 40, 23]
# }

# df = pd.DataFrame(persons)
# df.drop_duplicates(inplace = True)
# print(df)

# 接口调用
# 获取天气数据
# https://uapis.cn/docs/api-reference/get-misc-weather

# import requests

# base_url = "https://uapis.cn/api/v1/misc/phoneinfo"
# url = base_url + "?phone=19151542268"

# resp = requests.get(url)

# print(resp.json())

# from openai import OpenAI

# client = OpenAI(api_key="sk-abmzpwtselaztdryrtklguryyczmqqapgajbqseszsatkysx", base_url="https://api.siliconflow.cn/v1")

# question = input("请输入您的问题：")

# response = client.chat.completions.create(
#     model="deepseek-ai/DeepSeek-V3",
#     messages=[
#         {"role": "system", "content": "你是一位幽默大师"},
#         {"role": "user", "content": question}
#     ],
#     temperature=0.7,
#     max_tokens=1024,
#     stream=True
# )
# # 逐步接收并处理响应
# for chunk in response:
#     if not chunk.choices:
#         continue
#     if chunk.choices[0].delta.content:
#         print(chunk.choices[0].delta.content, end="", flush=True)
#     if chunk.choices[0].delta.reasoning_content:
#         print(chunk.choices[0].delta.reasoning_content, end="", flush=True)

# from http import HTTPStatus
# from urllib.parse import urlparse, unquote
# from pathlib import PurePosixPath
# import requests
# from dashscope import ImageSynthesis
# import os

# prompt = fr"一个玩滑板的红衣服黄头发的男生"

# # 请用百炼API Key
# api_key = "sk-abmzpwtselaztdryrtklguryyczmqqapgajbqseszsatkysx"

# print('----同步调用，请等待任务执行----')
# rsp = ImageSynthesis.call(api_key=api_key,
#                           model="qwen-image",
#                           prompt=prompt,
#                           n=1,
#                           size='1328*1328',
#                           prompt_extend=True,
#                           watermark=True)

# print('response: %s' % rsp)
# if rsp.status_code == HTTPStatus.OK:
#     # 在当前目录下保存图片
#     for result in rsp.output.results:
#         file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
#         with open('./data/draw/%s' % file_name, 'wb+') as f:
#             f.write(requests.get(result.url).content)
# else:
#     print('同步调用失败, status_code: %s, code: %s, message: %s' %
#           (rsp.status_code, rsp.code, rsp.message))

# import matplotlib.pyplot as plt
# import numpy as np
# x = np.arange(0,4*np.pi,0.1)
# y = np.sin(x)
# z = np.cos(x)
# plt.plot(x,y,x,z)
# plt.show()

# import matplotlib.pyplot as plt
# import numpy as np

# #plot 1:
# xpoints = np.array([0, 6])
# ypoints = np.array([0, 100])

# plt.subplot(1, 2, 1)
# plt.plot(xpoints, ypoints)
# plt.plot(xpoints, ypoints)
# plt.title("plot 1")

# #plot 2:
# x = np.array([1, 2, 3, 4])
# y = np.array([1, 4, 9, 16])

# plt.subplot(1, 2, 2)
# plt.plot(x, y)
# plt.title("plot 2")

# plt.suptitle("RUNOOB subplot Test")
# plt.show()

# import matplotlib.pyplot as plt
# import numpy as np
# import pandas as pd

# # 读取 Excel 文件
# excel_file = pd.ExcelFile('code/0data/2020年销售数据.xlsx')

# # 获取对应工作表数据
# df = excel_file.parse('data')

# # 计算销售额，保留两位小数
# df['销售额'] = (df['售价'] * df['销售数量']).round(2)

# # 计算各品牌销售额
# brand_sales = df.groupby('品牌')['销售额'].sum()

# # 计算各销售渠道销售额
# channel_sales = df.groupby('销售渠道')['销售额'].sum()

# # 设置图片清晰度
# plt.rcParams['figure.dpi'] = 300

# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']

# # plot 1: 各品牌销售额折线图
# xpoints_1 = np.arange(len(brand_sales.index))
# ypoints_1 = brand_sales.values

# plt.subplot(1, 2, 1)
# plt.plot(xpoints_1, ypoints_1)
# plt.title("各品牌销售额")
# plt.xticks(xpoints_1, brand_sales.index, rotation=45)

# # plot 2: 各销售渠道销售额折线图
# xpoints_2 = np.arange(len(channel_sales.index))
# ypoints_2 = channel_sales.values

# plt.subplot(1, 2, 2)
# plt.plot(xpoints_2, ypoints_2)
# plt.title("各销售渠道销售额")
# plt.xticks(xpoints_2, channel_sales.index, rotation=45)

# plt.suptitle("销售数据相关折线图")
# plt.tight_layout()
# plt.show()

# from matplotlib import pyplot as plt
# import matplotlib.pyplot as plt

# # 设置中文字体支持（解决乱码问题）
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体显示中文
# plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示异常问题

# # 1. 准备数据
# labels = ['优秀', '良好', '中等', '及格','不及格','缺考']  # 类别标签
# sizes = [15, 25,30,10,8,12]                  # 各部分大小
# explode = [0.1, 0, 0, 0,0,0]                  # 突出显示第一部分（苹果）

# # 2. 创建画布
# plt.figure(figsize=(8, 8), dpi=100)

# # 3. 绘制饼图
# wedges, texts, autotexts = plt.pie(
#     sizes,
#     explode=explode,           # 突出显示设置
#     labels=labels,             # 类别标签
#     autopct='%1.1f%%',         # 显示百分比（保留1位小数）
#     shadow=True,               # 阴影效果
#     startangle=90,             # 起始角度（90度为从正上方开始）
#     colors=['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc', '#c2c2f0'],  # 自定义颜色
#     textprops={'fontsize': 12},  # 标签文字大小
#     pctdistance=0.85,          # 百分比文字距离圆心的距离（0-1）
#     wedgeprops={'edgecolor': 'white', 'linewidth': 2}  # 扇区边框
# )

# # 4. 美化文本
# plt.setp(autotexts, size=10, weight='bold', color='white')  # 百分比文字样式
# plt.title('班级成绩等级分布', fontsize=15)  # 标题

# # 5. 保证饼图为正圆形
# plt.axis('equal')

# # 6. 显示图表
# plt.tight_layout()
# plt.show() 

# import matplotlib.pyplot as plt
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体显示中文

# months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
# sales = [8, 12, 10, 9, 11, 15, 18, 16, 13, 14, 17, 20]

# plt.figure(figsize=(10, 6))

# plt.plot(months, sales, color='red', marker='o', linestyle='-')

# plt.title('2024年奶茶店月度销售额趋势图')
# plt.xlabel('月份')
# plt.ylabel('销售额（万元）')

# plt.grid(True, linestyle='--', alpha=0.7)

# plt.show()


# import numpy as np
# import matplotlib.pyplot as plt
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体显示中文
# plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示异常问题
# np.random.seed(42)
# x = np.random.randn(200)
# y = 2 * x + np.random.randn(200) * 0.5
# sizes = np.random.randint(10, 100, 200)
# colors = np.random.rand(200)

# plt.figure(figsize=(10, 6), dpi=100)

# scatter = plt.scatter(
#     x, y,
#     s=sizes,
#     c=colors,
#     alpha=0.7,
#     marker='o',
#     cmap='viridis',
#     edgecolors='black',
#     linewidths=0.5
# )

# plt.title('变量X与Y的散点图', fontsize=15)
# plt.xlabel('X值', fontsize=12)
# plt.ylabel('Y值', fontsize=12)
# plt.grid(True, linestyle=':', alpha=0.5)
# plt.colorbar(scatter, label='颜色强度')

# plt.tight_layout()
# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt

# # 设置中文显示
# plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['axes.unicode_minus'] = False

# # 定义数据
# x = np.array([89, 129, 169, 199, 229, 269, 299, 329, 369, 399])
# y = np.array([1200, 950, 800, 720, 600, 550, 480, 400, 300, 250])

# # 创建画布
# plt.figure(figsize=(10, 6), dpi=100)

# # 绘制散点图
# plt.scatter(x, y, color='blue', marker='o', label='数据点')

# # 添加趋势线（使用numpy的polyfit拟合一次函数）
# z = np.polyfit(x, y, 1)
# p = np.poly1d(z)
# plt.plot(x, p(x), color='red', linestyle='--', label='趋势线')

# # 添加标题和坐标轴标签
# plt.title('连衣裙单价与月销量关系散点图', fontsize=15)
# plt.xlabel('单价（元）', fontsize=12)
# plt.ylabel('月销量（件）', fontsize=12)

# # 显示网格
# plt.grid(True, linestyle=':', alpha=0.5)

# # 显示图例
# plt.legend()

# # 调整布局并显示
# plt.tight_layout()
# plt.show()

# # 分析相关性
# corr = np.corrcoef(x, y)[0, 1]
# print(f"相关系数：{corr:.2f}")
# print("分析：连衣裙单价和月销量之间存在**较强的负相关性**，即随着单价的升高，月销量呈现明显的下降趋势。")

# import matplotlib.pyplot as plt

# # 1. 准备数据
# labels = ['技术部', '市场部', '运营部', '行政部', '财务部']
# sizes = [350, 250, 200, 120, 80]
# colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', 'red']

# # 设置中文字体
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 替换为你的系统支持的中文字体，如“Microsoft YaHei”
# plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题（若涉及负号需加，此处可选）

# # 2. 创建画布
# plt.figure(figsize=(8, 8), dpi=100)

# # 3. 绘制环形图（本质是带空白的饼图）
# plt.pie(
#     sizes,
#     labels=labels,
#     colors=colors,
#     autopct=lambda p: f'{int(p * sum(sizes) / 100)}/{sum(sizes)}\n{p:.1f}%',  # 显示预算金额、总预算、占比
#     startangle=140,
#     pctdistance=0.85,  # 百分比位置（比饼图更靠外）
#     wedgeprops=dict(width=0.3, edgecolor='white')  # width控制环的厚度
# )

# # 4. 添加中心空白（画一个白色圆覆盖中心，并在中心显示总预算）
# centre_circle = plt.Circle((0, 0), 0.70, fc='white')  # 半径0.7的白色圆
# fig = plt.gcf()  # 获取当前画布
# fig.gca().add_artist(centre_circle)  # 添加中心圆
# fig.gca().text(0, 0, f'总预算\n{sum(sizes)}万', ha='center', va='center', fontsize=12)  # 中心显示总预算

# # 5. 设置属性
# plt.title('2024 年公司各部门预算占比环形图', fontsize=15)
# plt.axis('equal')  # 保证圆形

# # 6. 显示图表
# plt.tight_layout()
# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 替换为你的系统支持的中文字体，如“Microsoft YaHei”
# plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题（若涉及负号需加，此处可选）

# # 1. 准备数据
# np.random.seed(42)
# data = np.random.randn(1000)  # 1000个符合标准正态分布的数据

# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)

# # 3. 绘制直方图
# n, bins, patches = plt.hist(
#     data,
#     bins=30,            # 分箱数量（或传入分箱边界数组）
#     density=True,       # 是否归一化（面积和为1）
#     color='skyblue',    # 柱形颜色
#     alpha=0.7,          # 透明度
#     edgecolor='black',  # 柱形边框颜色
#     linewidth=0.5       # 边框宽度
# )

# # 4. 叠加概率密度曲线（更直观展示分布）
# mu, sigma = np.mean(data), np.std(data)
# plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
#          np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
#          linewidth=2, color='red', label='正态分布曲线')

# # 5. 设置属性
# plt.title('正态分布数据直方图', fontsize=15)
# plt.xlabel('数据值', fontsize=12)
# plt.ylabel('频率密度', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)  # 只显示y轴网格
# plt.legend()

# # 6. 显示图表
# plt.tight_layout()
# plt.show()

# import matplotlib.pyplot as plt
# plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文显示问题
# plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# # 1. 准备数据
# score_intervals = ['80-90', '90-100', '100-110', '110-120', '120-130', '130-140', '140-150']
# counts = [5, 8, 12, 10, 8, 5, 2]

# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)

# # 3. 绘制直方图（柱形无间隔）
# bars = plt.bar(
#     score_intervals,
#     counts,
#     width=1.0,         # 消除柱间间隔
#     color='orange',    # 橙色填充
#     edgecolor='black', # 黑色边框
#     linewidth=1        # 边框宽度
# )

# # 4. 设置属性
# plt.title('高一年级数学成绩分布直方图', fontsize=15)
# plt.xlabel('成绩区间', fontsize=12)
# plt.ylabel('人数', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)  # 显示y轴网格

# # 5. 显示图表
# plt.tight_layout()
# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt

# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# # 1. 准备数据（多组对比示例）
# categories = ['一月', '二月', '三月', '四月', '五月']  # 类别
# data1 = [20, 35, 30, 35, 27]  # 第一组数据（如A产品销量）
# data2 = [25, 32, 34, 20, 25]  # 第二组数据（如B产品销量）

# x = np.arange(len(categories))  # 类别位置（0,1,2,3,4）
# width = 0.35  # 柱形宽度

# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)

# # 3. 绘制柱状图
# rects1 = plt.bar(
#     x - width/2,  # 第一组柱形位置（左移width/2）
#     data1,
#     width,
#     label='A产品',
#     color='skyblue',
#     edgecolor='black'
# )
# rects2 = plt.bar(
#     x + width/2,  # 第二组柱形位置（右移width/2）
#     data2,
#     width,
#     label='B产品',
#     color='orange',
#     edgecolor='black'
# )

# # 4. 添加数据标签（在柱形顶部显示数值）
# def add_labels(rects):
#     for rect in rects:
#         height = rect.get_height()
#         plt.text(
#             rect.get_x() + rect.get_width()/2, height + 0.5,
#             f'{height}', ha='center', va='bottom', fontsize=10
#         )
# add_labels(rects1)
# add_labels(rects2)

# # 5. 设置属性
# plt.title('A、B产品月度销量对比', fontsize=15)
# plt.xlabel('月份', fontsize=12)
# plt.ylabel('销量（件）', fontsize=12)
# plt.xticks(x, categories)  # 设置x轴刻度为类别名称
# plt.ylim(0, 40)  # y轴范围
# plt.grid(axis='y', linestyle=':', alpha=0.7)
# plt.legend()

# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt

# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# # 1. 准备数据
# stores = ['门店A', '门店B', '门店C', '门店D']  # 门店类别
# april = [20, 18, 22, 15]  # 4月营业额
# may = [25, 20, 23, 18]    # 5月营业额
# june = [22, 21, 25, 20]   # 6月营业额

# x = np.arange(len(stores))  # 门店位置（0,1,2,3）
# width = 0.25  # 柱形宽度

# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)

# # 3. 绘制分组柱状图
# rects_april = plt.bar(
#     x - width,  # 4月柱形位置
#     april,
#     width,
#     label='4月',
#     color='blue',
#     edgecolor='black'
# )
# rects_may = plt.bar(
#     x,  # 5月柱形位置
#     may,
#     width,
#     label='5月',
#     color='orange',
#     edgecolor='black'
# )
# rects_june = plt.bar(
#     x + width,  # 6月柱形位置
#     june,
#     width,
#     label='6月',
#     color='green',
#     edgecolor='black'
# )

# # 4. 添加数据标签
# def add_labels(rects):
#     for rect in rects:
#         height = rect.get_height()
#         plt.text(
#             rect.get_x() + rect.get_width()/2, height + 0.5,
#             f'{height}', ha='center', va='bottom', fontsize=10
#         )
# add_labels(rects_april)
# add_labels(rects_may)
# add_labels(rects_june)

# # 5. 设置属性
# plt.title('超市各门店第二季度营业额柱状图', fontsize=15)
# plt.xlabel('门店', fontsize=12)
# plt.ylabel('营业额（万元）', fontsize=12)
# plt.xticks(x, stores)  # 设置x轴刻度为门店名称
# plt.ylim(0, 30)  # y轴范围
# plt.grid(axis='y', linestyle=':', alpha=0.7)
# plt.legend()

# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt
# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# # 1. 准备数据
# labels = ['攻击力', '防御力', '速度', '血量', '暴击率']  # 维度标签
# n = len(labels)  # 维度数量

# # 两个样本数据（如两个游戏角色的属性）
# data1 = [90, 60, 80, 70, 95]
# data2 = [70, 85, 65, 90, 60]

# # 计算每个维度的角度（极坐标）
# angles = np.linspace(0, 2*np.pi, n, endpoint=False).tolist()
# # 闭合雷达图（首尾相连）
# data1 = data1 + [data1[0]]
# data2 = data2 + [data2[0]]
# angles = angles + [angles[0]]
# labels = labels + [labels[0]]

# # 2. 创建画布（极坐标）
# plt.figure(figsize=(8, 8), dpi=100)
# ax = plt.subplot(111, polar=True)  # 设置为极坐标

# # 3. 绘制雷达图
# ax.plot(angles, data1, 'o-', linewidth=2, label='角色A')  # 角色A
# ax.fill(angles, data1, alpha=0.25)  # 填充颜色
# ax.plot(angles, data2, 's-', linewidth=2, label='角色B')  # 角色B
# ax.fill(angles, data2, alpha=0.25)

# # 4. 设置属性
# ax.set_thetagrids(np.degrees(angles), labels)  # 设置角度标签
# ax.set_ylim(0, 100)  # 设置数据范围
# ax.set_title('游戏角色属性对比', fontsize=15, pad=20)  # pad控制标题距离
# ax.grid(True)  # 显示网格
# plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1))  # 图例位置

# # 5. 显示图表
# plt.tight_layout()
# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt

# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# # 1. 准备数据
# labels = ['拍照', '性能', '续航', '外观', '价格']  # 维度标签
# n = len(labels)  # 维度数量

# # 两款手机的评分数据
# mi_data = [8.5, 9.2, 7.8, 8.0, 7.5]  # 小米手机
# huawei_data = [7.8, 8.5, 8.2, 8.5, 8.0]  # 华为手机

# # 计算每个维度的角度（极坐标）
# angles = np.linspace(0, 2*np.pi, n, endpoint=False).tolist()
# # 闭合雷达图（首尾相连）
# mi_data = mi_data + [mi_data[0]]
# huawei_data = huawei_data + [huawei_data[0]]
# angles = angles + [angles[0]]
# labels = labels + [labels[0]]

# # 2. 创建画布（极坐标）
# plt.figure(figsize=(8, 8), dpi=100)
# ax = plt.subplot(111, polar=True)  # 设置为极坐标

# # 3. 绘制雷达图
# ax.plot(angles, mi_data, 'o-', linewidth=2, label='小米手机', color='orange')
# ax.fill(angles, mi_data, alpha=0.25, color='orange')
# ax.plot(angles, huawei_data, 's-', linewidth=2, label='华为手机', color='skyblue')
# ax.fill(angles, huawei_data, alpha=0.25, color='skyblue')

# # 4. 设置属性
# ax.set_thetagrids(np.degrees(angles), labels)  # 设置角度标签
# ax.set_ylim(0, 10)  # 设置数据范围（满分10分）
# ax.set_title('两款手机各维度评分雷达图', fontsize=15, pad=20)  # pad控制标题距离
# ax.grid(True)  # 显示网格
# plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1))  # 图例位置

# # 5. 显示图表
# plt.tight_layout()
# plt.show()

# import numpy as np
# import matplotlib.pyplot as plt

# # 解决中文显示问题
# plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
# plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# # 1. 准备数据（多组数据对比）
# np.random.seed(42)
# data = [
#     np.random.normal(0, 1, 100),   # 正态分布1（均值0，标准差1）
#     np.random.normal(2, 1.5, 100), # 正态分布2（均值2，标准差1.5）
#     np.random.normal(-1, 0.8, 100) # 正态分布3（均值-1，标准差0.8）
# ]
# labels = ['组A', '组B', '组C']  # 数据组标签

# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)

# # 3. 绘制箱线图
# box = plt.boxplot(
#     data,
#     labels=labels,               # 各组标签
#     notch=True,                  # 是否显示中位数缺口（更直观展示中位数置信区间）
#     vert=True,                   # 是否垂直显示（False为水平）
#     patch_artist=True,           # 是否填充箱体颜色
#     widths=0.6,                  # 箱体宽度
#     showfliers=True,             # 是否显示异常值
#     flierprops=dict(marker='o', color='red', alpha=0.5), # 异常值样式
#     medianprops=dict(color='green', linewidth=2),        # 中位数线样式
#     boxprops=dict(facecolor='skyblue', edgecolor='black'),# 箱体样式
#     capprops=dict(color='black'), # 箱线顶部/底部横线样式
#     whiskerprops=dict(color='black') # whisker线（箱线到最值的线）样式
# )

# # 4. 设置属性
# plt.title('三组数据分布对比（箱线图）', fontsize=15)
# plt.ylabel('数据值', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)

# # 5. 显示图表
# plt.tight_layout()
# plt.show()

# import matplotlib.pyplot as plt

# # 解决中文显示乱码问题（适配Windows/macOS/Linux）
# plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'DejaVu Sans']  # 优先使用系统中文字体
# plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示异常

# # 1. 准备数据（基于三科分位数、异常值构造）
# 语文 = [90] + [100]*7 + [110]*15 + [120]*7 + [135]
# 数学 = [85] + [95]*7 + [115]*15 + [125]*6 + [145]  # 包含异常值145
# 英语 = [80] + [90]*7 + [105]*15 + [115]*7 + [130]
# data = [语文, 数学, 英语]
# labels = ['语文', '数学', '英语']

# # 2. 创建画布
# plt.figure(figsize=(10, 6), dpi=100)

# # 3. 绘制箱线图
# box = plt.boxplot(
#     data,
#     labels=labels,
#     notch=True,
#     vert=True,
#     patch_artist=True,
#     widths=0.6,
#     showfliers=True,
#     flierprops=dict(marker='o', color='red', alpha=0.5),
#     medianprops=dict(color='green', linewidth=2),
#     boxprops=dict(facecolor='skyblue', edgecolor='black'),
#     capprops=dict(color='black'),
#     whiskerprops=dict(color='black')
# )

# # 4. 设置属性
# plt.title('语文、数学、英语成绩箱线图', fontsize=15)
# plt.ylabel('成绩（满分150）', fontsize=12)
# plt.grid(axis='y', linestyle=':', alpha=0.7)

# # 5. 显示图表
# plt.tight_layout()
# plt.show()
